import {
  dataRegexp
} from '../utils/tools';
import Dialog from '@vant/weapp/dialog/dialog';

/** 验证表单
 * @param formItem 所有表单项（验证规则）
 * @param formValue 所有要验证的表单值
 */
export const nxFormValidator = async (formItem, formValue) => {
  let noError = true,
    msg = [];

  for (const k in formItem) {
    const item = formItem[k];
    const value = formValue[k];
    const status = await nxValidator(item, value);
    if (noError) noError = status;

    // 构造错误信息，用于提示
    if (!status) {
      msg.push(item.errorMessage);
    }
  }

  if (noError) {
    return Promise.resolve(true);
  } else {
    Dialog.confirm({
      messageAlign: 'left',
      title: '提示信息',
      message: msg.join('，') + '！',
      showCancelButton: false,
      confirmButtonText: '确认',
    });
    return Promise.reject(formItem);
  }
}

/** 验证表单项
 * @param item 表单项（验证规则）pattern规则名（'mobile','idcard'等）
 * @param value 要验证的表单值
 */
export const nxValidator = async (item, value, trim = true) => {
  let val = value;
  if (typeof val === 'string' && trim) {
    val = val.trim();
  }
  /** 改变初始值 */
  item.value = val;

  if (item.required) {
    const flag = await dataRegexp(val, 'empty');
    if (flag) {
      item.errorMessage = item.label + '不能为空';
      return false;
    }
  }
  if (item.pattern && val) {
    const flag = await dataRegexp(val, item.pattern);
    if (!flag) {
      if (item.pattern === 'baoE') {
        item.errorMessage='请输入0~10000的数字，可保留两位小数'
      }else if(item.pattern === 'peifu'){
        item.errorMessage='请输入0~10000000的数字，可保留两位小数'
      } else {
        item.errorMessage = item.label + '格式不正确';
      }
      return false;
    }
  }
  item.errorMessage = '';

  return true;
}